/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.edu.itschapala.sistemas.septimo.Control.Otras;
import mx.edu.itschapala.sistemas.septimo.Modelo.Producto;
import java.util.*;
import mx.edu.itschapala.sistemas.septimo.Control.ProductoLnLocalProducto;
import mx.edu.itschapala.sistemas.septimo.Vista.enumeracion.TipoBusqueda;



/**
 *
 * @author Sony
 */
//Lunes 8 de Septiembre
//En esta clase que se llama ProductoLnArreglo todo lo que contiene
//lo implementa ala interfaz ProductoLnLocal

public class ProductoLnArreglo implements ProductoLnLocalProducto {
    
    //declaramos el metodo listaProductos que sera igual a new producto en la posicion 100
    private Producto listaProductos[] = new Producto[100];

    //declaramos nuestras variables a utilizar y el valor de ellas
    private int indice=0;
    
    
    
//metodo de clarado para registrar un producto le estamos especificando que si
    // el indice es menor a 99 lista de productos en la pocicion indice sera igual
    // a el producto.
    public void registrar(Producto producto){

            if (indice<99) {
            listaProductos[indice]=producto;
            indice++;
            }else{
                    System.out.println("No Hay Espacio En Memoria");
            }
    }
  
  //Metodo para modificar un producto donde especificamos que la posicion va aser igual -1 y con
    // un for le decimos que int x va aser igual 0 y que si x es menor que indice x va a incrementar
    // y con el if le decimos que si pos es diferente -1 retorne listaProductos en la posicion pos.
    //si no que de lo contrario retorne un valor nulo.
    //public void modificar(Producto producto, int codigo){
    
    //public Producto buscarPorCodigo(int codigo){
    public void modificar(Producto producto) {
      int pos=-1;

            for(int x=0;x<indice;x++){

                    if (listaProductos[x].getCodigo()==producto.getCodigo()) {
                    pos=x;
                    }
            }
            if (pos!=-1) {
                    while (pos<indice){
                            listaProductos[pos]=listaProductos[pos+1];
                            pos++;
                    }
            }
            indice--;
    
    }
           
  
  //metodo para eliminar un producto  en este metodo le especificamos que pos es igual a -1
    //y declaramos un for para indicar que int x que es igual cero, y que mientras x sea menor a
    //indice x va a incrementar. y con un if le decimos listaProductos en la posicion x obtenga el codigo que 
    //que va aser igual a producto a hora la posicion va ser igual a x, ahora con if le decimos que si pos es
    //diferente a -1 y que mientras pos sea menor que indice obtendremos la listaProductos en la la posicion pos
    //que va aser igual listaProductos en la pos+1 y pos incrementara.
    public void eliminar(Producto producto){

            int pos=-1;

            for(int x=0;x<indice;x++){

                    if (listaProductos[x].getCodigo()==producto.getCodigo()) {
                    pos=x;
                    }
            }
            if (pos!=-1) {
                    while (pos<indice){
                            listaProductos[pos]=listaProductos[pos+1];
                            pos++;
                    }
            }
            indice--;
    }

    //metodo para buscar un producto por codigo en este metodo declaramos pos que es igual a-1
    //y declaramos un for para especificarle al metodo que x de tipo de dato entero va ser igual a 0 y mientras que
    //x sea menor a indice x va a incrementar y con un if le decimos que listaProductos en la posicion x va obtener
    //el codigo mientras la posicion sea igual a x. 

    public Producto buscarPorCodigo(int codigo){

    int pos=-1;

            for(int x=0;x<indice;x++){
                    if (listaProductos[x].getCodigo()==codigo) {
                            pos=x;
                    }
            }
            if (pos!=-1) {
                    return listaProductos[pos];
            }else{
                    return null;
            }
    }
//en este metodo declaramos un Lista lo cual nos arrojara como resultado lo que contiene producto.
    public List<Producto> getTodos(){
    
            List<Producto> lista = new ArrayList<Producto>();
            for(int x=0;x<indice;x++){
                    lista.add(listaProductos[x]);
            }
            return lista;
    }

    @Override
    public List<Producto> getPornombre(String Nombre, TipoBusqueda criterio) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    
 }



